package com.neusoft.databus.core.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableScheduling;

import com.neusoft.bizcore.cloud.annotition.EnableBizcoreCloud;
import com.neusoft.bizcore.common.annotation.EnableBizcoreCache;
import com.neusoft.bizcore.common.annotation.EnableBizcoreMessaging;
import com.neusoft.bizcore.common.annotation.EnableKafka0;
import com.neusoft.bizcore.schedule.annotition.EnableBizcoreSchedule;
import com.neusoft.bizcore.web.annotation.EnableBizcoreWebMVC;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@EnableBizcoreWebMVC
@EnableBizcoreCloud
@EnableKafka0
@EnableBizcoreMessaging
@EnableBizcoreCache
@EnableBizcoreSchedule
@EnableFeignClients
@EnableScheduling
@RibbonClient(name = "myrobbonclient", configuration = com.neusoft.databus.core.config.LoadBalanceConfiguration.class)
@EnableAutoConfiguration(exclude = {KafkaAutoConfiguration.class })
@SpringBootApplication
@EntityScan({"com.neusoft.databus.core.model", "com.neusoft.databus.common.model" })
public @interface DatabusCoreConfiguration {

}
